package cn.tedu.search.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

@Data
@Accessors(chain = true)    // 支持链式set赋值
@AllArgsConstructor         // 自动生成当前类的全参构造方法
@NoArgsConstructor          // 自动生成当前类的无参构造方法
// @Document注解标记表示当前类是对应ES框架的一个实体类
// indexName来指定对应ES中的索引名称,运行时,SpringDataES框架会自动创建这个索引
@Document(indexName = "items")
public class Item implements Serializable {

    // SpringData标记当前字段为主键的注解
    @Id
    private Long id;
    // SpringData 标记title字段支持分词,并定义它的分词器
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String title;
    // 我们设计分类名称是不需要分词的
    @Field(type = FieldType.Keyword)
    private String category;
    @Field(type = FieldType.Keyword)
    private String brand;
    @Field(type = FieldType.Double)
    private Double price;
    // imgPath是图片路径,它不会称为搜索条件,所以可以不创建索引,节省一些空间
    // 设置index=false,就是不会设置索引
    // 但是注意,不设置索引并不是不保存这个数据,ES会保存这个数据
    @Field(type = FieldType.Keyword,index = false)
    private String imgPath;


    //  images/2022/09/28/c0fa-00ad834-ac000-9e821c78a761.jpg



}
